package demo5;

/**
 * @author Huangjin
 * @version 1.0
 * describe:static final常量的演示
 * @date 2023/2/27 16:01
 */
public class StaticFinalDemo {
    /**
     * 必须声明同时初始化
     * 常常通过类名点来访问，不能被改变
     * 建议：常量名所有字母大写，多个单词之间用_分隔
     * */
    public static void main(String[] args) {
        System.out.println(Loo.PI);
        //Loo.PI = 3.12;//编译错误，常量不能被改变
        //1)加载Loo.class到方法区中
        //2)静态变量num一并存储到方法区中
        //3)到方法区中获取num的值并输出
        System.out.println(Loo.num);
        //编译器在编译时会将常量直接替换为具体的数，效率高
        //相当于System.out.println(5)
        System.out.println(Loo.NUM);
    }

}
class Loo{
    public static int num = 5;
    public static final int NUM = 10;
    public static final double PI = 3.1415926;
    //private static final int NUM;//编译错误，常量必须声明同时初始化
}
